package router

// ----------------------------------------------------------------------------
// 文件：router/link.go
// 描述：连接配置
// 版本：0.2
// 作者：lg
// 日期：2021-07-24
// 修改：2021-07-24 0.1 lg  removeLink函数
//      2021-11-13 0.2 lg  getLink函数
// ----------------------------------------------------------------------------

import (
	"errors"
	"io/ioutil"
	"odm/com"
	"odm/logger"
	"odm/model"
	"path"

	"github.com/kataras/iris/v12"
)

// -------------------------- Link -------------------------

// getLinks get link list
func getLinks(ctx iris.Context) {
	ctx.JSON(model.GetLinks())
}

// removeLink remove node
func removeLink(ctx iris.Context) {
	linkid := ctx.Params().Get("lid")
	// 删除连接配置
	if err := model.RemoveLink(linkid); err != nil {
		logger.Error(err)
		ctx.JSON(iris.Map{"status": false, "message": err.Error()})
		return
	}
	// 删除连接配置
	ctx.JSON(iris.Map{"status": true, "message": "删除连接配置成功"})
}

// getLink 获取链接数据（密码解密）
func getLink(linkid string) (*model.Link, error) {
	var err error
	link := model.GetLink(linkid)
	if link.Lid == "" {
		return nil, errors.New("连接主机地址未配置")
	}
	link.Password, err = com.RSADecrypt(link.Password)
	return link, err
}

// addLink add node info
func addLink(ctx iris.Context) {
	link := new(model.Link)
	if err := ctx.ReadJSON(link); err != nil {
		logger.Errorf("数据绑定异常 [%s]", err)
		ctx.StopWithJSON(iris.StatusBadRequest, iris.Map{"status": false, "message": "数据绑定异常"})
		return
	}
	// 新增连接配置
	if err := model.AddLink(link); err != nil {
		logger.Error(err)
		ctx.JSON(iris.Map{"status": false, "message": err.Error()})
		return
	}
	// 新增连接配置
	ctx.JSON(iris.Map{"status": true, "message": "新增连接配置成功"})
}

// getKey get public rsa key
func getKey(ctx iris.Context) {
	file, err := ioutil.ReadFile(path.Join("data", "public.pem"))
	if err != nil {
		ctx.JSON(iris.Map{"status": false, "message": "打开密钥文件失败:" + err.Error()})
		return
	}
	ctx.JSON(iris.Map{"status": true, "key": string(file)})
}
